package com.yeyks.common.utils;

import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * 随机数的工具类
 *
 * @author: dagny
 * @date: 2019/11/2 0002 17:30
 */
@Slf4j
public class CommonRandomUtils implements Serializable {
    private static final long serialVersionUID = -5481077987143044884L;


    /**
     * 获取随机数
     * @param numSize 随机数的区间，比如numSize = 5 --> 区间就为 【0-4】之间
     * @param needSize 需要几个随机数。 获取随机数的个数，决定list的大小
     * @return
     */
    public static List<Integer> random(int numSize, int needSize){
        // 生成 [0-n) 个不重复的随机数
        // list 用来保存这些随机数
        List<Integer> list = Lists.newArrayList();
        Random rand = new Random();
        boolean[] bool = new boolean[numSize];
        int num = 0;
        for (int i = 0; i < numSize; i++) {
            do {
                // 如果产生的数相同继续循环
                num = rand.nextInt(numSize);
            } while (bool[num]);
            bool[num] = true;
            if(list.size() == needSize){
                break;
            }
            list.add(num);
        }
        return list;
    }

    public static void main(String[] args) {
        System.out.println(random(0, 2));
    }
}
